#ifndef __SHOW_PIC_H__
#define __SHOW_PIC_H__

#include "homepage.h"
#include "list.h"

// 函数声明

extern void start_screen_timers(void);
extern void stop_screen_timers(void);
bool is_screen1_active(void);
bool is_screen2_active(void);
/**
 * @brief 初始化屏幕1的图片链表
 * 
 * 初始化链表
 * 链表的插入
 * 
 */
extern void init_image_list_screen1(void);

/**
 * @brief 初始化屏幕2的图片链表
 * 
 * 初始化链表
 * 链表的插入
 * 
 */
extern void init_image_list_screen2(void);

/**
 * @brief 初始化屏幕2的图片链表
 * 
 * 初始化链表
 * 链表的插入
 * 
 */
extern void init_image_list_screen2(void);

/**
 * @brief 清理屏幕1的图片链表资源
 * 
 * 释放屏幕1链表占用的内存，重置相关变量
 */
extern void cleanup_image_list_screen1(void);

/**
 * @brief 清理屏幕2的图片链表资源
 * 
 * 释放屏幕2链表占用的内存，重置相关变量
 */
extern void cleanup_image_list_screen2(void);

/**
 * @brief 显示指定屏幕的当前图片
 * 
 * 根据当前节点中的图片路径，更新对应屏幕的图片显示
 * 
 * @param screen_num 屏幕编号（1或2）
 */
extern void show_current_image(int screen_num);

/**
 * @brief 切换到下一张图片（指定屏幕）
 * 
 * 在双向循环链表中移动到下一个节点，实现图片循环播放
 * 
 * @param screen_num 屏幕编号（1或2）
 */
extern void next_image(int screen_num);

/**
 * @brief 切换到上一张图片（指定屏幕）
 * 
 * 在双向循环链表中移动到前一个节点，实现图片逆向循环
 * 
 * @param screen_num 屏幕编号（1或2）
 */
extern void prev_image(int screen_num);

/**
 * @brief 切换到指定屏幕
 * 
 * 加载并显示指定的屏幕，更新当前屏幕状态。
 * 
 * @param screen_num 屏幕编号（1或2）
 */
extern void switch_screen(int screen_num);

/**
 * @brief 设置屏幕1的UI界面
 * 
 * 创建屏幕1的所有UI元素：
 *  图片显示区域
 *  左右切换按钮
 *  屏幕切换按钮
 *  自动轮播定时器
 *  触摸事件处理
 */
extern void setup_screen1(void);

/**
 * @brief 设置屏幕2的UI界面
 * 
 * 创建屏幕2的所有UI元素：
 *  图片显示区域
 *  左右切换按钮
 *  返回按钮
 *  屏幕标题
 *  自动轮播定时器
 *  触摸事件处理
 */
extern void setup_screen2(void);

/**
 * @brief 初始化双屏幕
 * 
 * 完整的初始化流程：
 * 1. 初始化两个屏幕的图片链表
 * 2. 设置两个屏幕的UI界面
 * 3. 设置默认屏幕并加载
 */
extern void setup_dual_screen_image(void);

#endif